package maxssina.activity;

import java.util.SortedSet;

import maxssina.models.UserInfo;
import maxssina.orm.UsersDB;
import maxssina.service.OAuthService;

import oauth.signpost.OAuthProvider;
import oauth.signpost.basic.DefaultOAuthProvider;
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
import oauth.signpost.exception.OAuthCommunicationException;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;
import oauth.signpost.exception.OAuthNotAuthorizedException;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView;

/**
 * @author max
 */

public class AuthActivity extends BaseActivity implements OnClickListener {
	// CommonsHttpOAuthConsumer httpOauthConsumer;
	// OAuthProvider httpOauthprovider;
	private final String CALLBACKURL = "myapp://AuthActivity";

	private Button mButton;
	private OAuthService oAuthService;
	private WebView mWebView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.page_oauth);
		init();
		onCreateView();
		// String consumerKey="1103249792";
		// String consumerSecret="14cd576fb8159097615e70caf392827d";
		// String callBackUrl="myapp://AuthActivity";
		//        
		// // Button btn2=(Button)findViewById(R.id.btn2);
		// // btn2.
		//        
		// try{
		// httpOauthConsumer = new
		// CommonsHttpOAuthConsumer(consumerKey,consumerSecret);
		// httpOauthprovider = new
		// DefaultOAuthProvider("http://api.t.sina.com.cn/oauth/request_token","http://api.t.sina.com.cn/oauth/access_token","http://api.t.sina.com.cn/oauth/authorize");
		// String authUrl =
		// httpOauthprovider.retrieveRequestToken(httpOauthConsumer,
		// callBackUrl);
		// startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
		//    		
		// int b=4;
		//    		
		// }catch(Exception e){
		// String s= e.getMessage();
		// }
	}

	// @Override
	// protected void onNewIntent(Intent intent) {
	// super.onNewIntent(intent);
	// Uri uri = intent.getData();
	// String verifier =
	// uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);
	// try {
	// httpOauthprovider.setOAuth10a(true);
	// httpOauthprovider.retrieveAccessToken(httpOauthConsumer,verifier);
	// } catch (OAuthMessageSignerException ex) {
	// ex.printStackTrace();
	// } catch (OAuthNotAuthorizedException ex) {
	// ex.printStackTrace();
	// } catch (OAuthExpectationFailedException ex) {
	// ex.printStackTrace();
	// } catch (OAuthCommunicationException ex) {
	// ex.printStackTrace();
	// }
	// SortedSet<String> user_id=
	// httpOauthprovider.getResponseParameters().get("user_id");
	// String userId=user_id.first();
	// String userKey = httpOauthConsumer.getToken();
	// String userSecret = httpOauthConsumer.getTokenSecret();
	//        
	// TextView text=(TextView)findViewById(R.id.text);
	// text.setText("suerId:"+userId+"/userKey:"+userKey+"/userSecret:"+userSecret);
	// }
	private void onCreateView() {
		mButton = (Button) findViewById(android.R.id.button1);
		mButton.setOnClickListener(this);

		mWebView = (WebView) findViewById(R.id.web);
		mWebView.getSettings().setJavaScriptEnabled(true);
		mWebView.getSettings().setSupportZoom(true);
		mWebView.getSettings().setBuiltInZoomControls(true);
         
		mWebView.loadUrl(oAuthService.getRequestAccessUrl(CALLBACKURL));
	}

	private void init() {
		oAuthService = OAuthService.getInstance();
	}

	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		UserInfo user = oAuthService.GetAccessToken(intent);
		if (user != null) {
			UsersDB helper = new UsersDB(this);
			String uid = user.getUserId();
			if (helper.HaveUserInfo(uid)) {
				helper.UpdateUserInfo(user);
				Log.e("hcy", "update");
			} else {
				helper.SaveUserInfo(user);
				Log.e("hcy", "add");
			}
			Intent i = new Intent(AuthActivity.this,DefaultActivity.class);
			AuthActivity.this.startActivity(i);
		}
	}

	@Override
	public void onClick(View v) {
		if (v.equals(mButton)) {
			oAuthService.RequestAccessToken(AuthActivity.this, CALLBACKURL);
		}
	}
}
